Skip to content
  • 国内唯一专注于CFD的讨论社区

    3 主题
    325 帖子
    H

    我写 固我在,嘿嘿

  • OpenFOAM交流区

    5k 主题
    32k 帖子
    L

    安装 geometricVofExt,遇到CGAL的链接和指向问题。

    问题语句为 include $(GENERAL_RULES)/CGAL

    请大佬指点一下,如何解决?!

    安装过程如下:

    CGAL 安装
    安装后,检查是否安装成功: ****************************** Check CGAL ****************************** cgal=true flavour=library root="/home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3" include="/home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include" library="/home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/lib64" ********************************* Done *********************************

    其中,ABCD表示 home 目录。

    src/CGALVof 目录编译: 使用原始的 options 文件

    无法编译 libCGALVof.so

    >> wmake libso CGALVof make: *** /home/ABCD/OpenFOAM/OpenFOAM-v2506/wmake/rules/General/CGAL: Is a directory. Stop. make: *** /home/ABCD/OpenFOAM/OpenFOAM-v2506/wmake/rules/General/CGAL: Is a directory. Stop. wmake error: file 'Make/linux64GccDPInt32Opt/sourceFiles' could not be created in /home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/CGALVof

    其中,原始 options 文件为

    CGAL_EXACT = /*-DCGAL_DONT_USE_LAZY_KERNEL*/ CGAL_INEXACT = -DCGAL_INEXACT include $(GENERAL_RULES)/CGAL c++CGALWARN = -Wno-old-style-cast EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/fileFormats/lnInclude \ -I$(LIB_SRC)/surfMesh/lnInclude \ -I$(LIB_SRC)/dynamicFvMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/surfMesh/lnInclude \ -ICGALVof/lnInclude \ ${CGAL_EXACT} \ ${CGAL_INEXACT} \ ${CGAL_INC} \ ${c++CGALWARN} \ -fopenmp \ -frounding-math EXE_LIBS = \ ${CGAL_LIBS} \ -lfiniteVolume \ -lfileFormats \ -lsurfMesh \ -ldynamicFvMesh \ -lmeshTools

    **根据错误提示,定位问题出在语句 include $(GENERAL_RULES)/CGAL **.

    src/CGALVof 目录编译: 编译前导入环境变量

    注释 options 文件中的语句 /*include $(GENERAL_RULES)/CGAL*/ **.

    编译前导入的环境变量为

    #!/bin/bash export CGAL_INC=-I${WM_THIRD_PARTY_DIR}/platforms/linux64Gcc/CGAL-4.14.3/include export CGAL_LIBS=-L${WM_THIRD_PARTY_DIR}/platforms/linux64Gcc/CGAL-4.14.3/lib64

    编译命令为

    source bashrc # bashrc 文件即为导入的环境变量 wclean wmake

    成功编译出 libCGALVof.so

    applications/utilities/setVofField 编译

    根据第 3 步的经验,注释 options 文件中的语句 /*include $(GENERAL_RULES)/CGAL*/ **.

    编译结果为

    Making dependencies: setVofField.C g++ -std=c++17 -m64 -pthread -DOPENFOAM=2506 -DWM_DP -DWM_LABEL_SIZE=32 -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof -Wno-attributes -Wno-unknown-pragmas -O3 -DNoRepository -ftemplate-depth-100 -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/finiteVolume/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/fileFormats/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/surfMesh/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/dynamicFvMesh/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/dynamicMesh/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/overset/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/meshTools/lnInclude -I/home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/CGALVof/lnInclude -I/home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/SimPLIC/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/phaseSystemModels/twoPhaseInter/incompressibleInterPhaseTransportModel/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/sampling/lnInclude -DCGAL_INEXACT -I/home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include -Wno-old-style-cast -fopenmp -frounding-math -iquote. -IlnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/OpenFOAM/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/OSspecific/POSIX/lnInclude -fPIC -c setVofField.C -o Make/linux64GccDPInt32Opt/setVofField.o In file included from /usr/include/boost/type_index.hpp:25, from /usr/include/boost/variant/variant.hpp:21, from /usr/include/boost/variant.hpp:17, from /home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include/CGAL/Object.h:38, from /home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include/CGAL/kernel_basic.h:34, from /home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include/CGAL/basic.h:47, from /home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include/CGAL/Cartesian/Cartesian_base.h:29, from /home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include/CGAL/Simple_cartesian.h:29, from /home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include/CGAL/Exact_predicates_inexact_constructions_kernel.h:29, from /home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/CGALVof/lnInclude/CGALKernel.H:55, from /home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/CGALVof/lnInclude/CGALSurfaceMesh.H:41, from setVofField.C:36: /usr/include/boost/function_output_iterator.hpp:14:1: note: ‘#pragma message: This header is deprecated. Use <boost/iterator/function_output_iterator.hpp> instead.’ 14 | BOOST_HEADER_DEPRECATED("<boost/iterator/function_output_iterator.hpp>") | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/include/boost/bind.hpp:36:1: note: ‘#pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.’ 36 | BOOST_PRAGMA_MESSAGE( | ^~~~~~~~~~~~~~~~~~~~ In file included from setVofField.C:43: /home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/SimPLIC/lnInclude/reconstruction.H:318:13: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 318 | const bool willMapAlphaField() const | ^~~~~ In file included from setVofField.C:98: setAlphaField.H: In function ‘int main(int, char**)’: setAlphaField.H:32:35: warning: unused variable ‘aridCells’ [-Wunused-variable] 32 | const DynamicList<label>& aridCells(cellLocs.aridCells()); | ^~~~~~~~~ In file included from setVofField.C:136: setAlphaField.H:32:35: warning: unused variable ‘aridCells’ [-Wunused-variable] 32 | const DynamicList<label>& aridCells(cellLocs.aridCells()); | ^~~~~~~~~ g++ -std=c++17 -m64 -pthread -DOPENFOAM=2506 -DWM_DP -DWM_LABEL_SIZE=32 -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof -Wno-attributes -Wno-unknown-pragmas -O3 -DNoRepository -ftemplate-depth-100 -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/finiteVolume/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/fileFormats/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/surfMesh/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/dynamicFvMesh/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/dynamicMesh/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/overset/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/meshTools/lnInclude -I/home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/CGALVof/lnInclude -I/home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/SimPLIC/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/phaseSystemModels/twoPhaseInter/incompressibleInterPhaseTransportModel/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/sampling/lnInclude -DCGAL_INEXACT -I/home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include -Wno-old-style-cast -fopenmp -frounding-math -iquote. -IlnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/OpenFOAM/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/OSspecific/POSIX/lnInclude -fPIC -Xlinker --add-needed -Xlinker --no-as-needed Make/linux64GccDPInt32Opt/setVofField.o -L/home/ABCD/OpenFOAM/OpenFOAM-v2506/platforms/linux64GccDPInt32Opt/lib \ -L/home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib -L/home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/lib64 -lfiniteVolume -lfileFormats -lsurfMesh -ldynamicFvMesh -loverset -lmeshTools -lwaveModels -lCGALVof -lSimPLIC -limmiscibleIncompressibleTwoPhaseMixture -lsampling -lOpenFOAM -ldl \ -lm -o /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/bin/setVofField /usr/bin/ld: Make/linux64GccDPInt32Opt/setVofField.o: in function `CGAL::Interval_nt<false>::Test_runtime_rounding_modes::Test_runtime_rounding_modes()': setVofField.C:(.text._ZN4CGAL11Interval_ntILb0EE27Test_runtime_rounding_modesC2Ev[_ZN4CGAL11Interval_ntILb0EE27Test_runtime_rounding_modesC5Ev]+0xc9): undefined reference to `CGAL::assertion_fail(char const*, char const*, int, char const*)' /usr/bin/ld: setVofField.C:(.text._ZN4CGAL11Interval_ntILb0EE27Test_runtime_rounding_modesC2Ev[_ZN4CGAL11Interval_ntILb0EE27Test_runtime_rounding_modesC5Ev]+0xe8): undefined reference to `CGAL::assertion_fail(char const*, char const*, int, char const*)' /usr/bin/ld: Make/linux64GccDPInt32Opt/setVofField.o: in function `CGAL::Interval_nt<true>::Test_runtime_rounding_modes::Test_runtime_rounding_modes()': setVofField.C:(.text._ZN4CGAL11Interval_ntILb1EE27Test_runtime_rounding_modesC2Ev[_ZN4CGAL11Interval_ntILb1EE27Test_runtime_rounding_modesC5Ev]+0xc9): undefined reference to `CGAL::assertion_fail(char const*, char const*, int, char const*)' /usr/bin/ld: setVofField.C:(.text._ZN4CGAL11Interval_ntILb1EE27Test_runtime_rounding_modesC2Ev[_ZN4CGAL11Interval_ntILb1EE27Test_runtime_rounding_modesC5Ev]+0xe8): undefined reference to `CGAL::assertion_fail(char const*, char const*, int, char const*)' /usr/bin/ld: Make/linux64GccDPInt32Opt/setVofField.o: in function `_GLOBAL__sub_I_setVofField.C': setVofField.C:(.text.startup+0x2e6): undefined reference to `CGAL::Random::Random()' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `mpfr_get_emin' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpn_com' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_swap' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_init' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `CGAL::precondition_fail(char const*, char const*, int, char const*)' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpn_copyi' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_cmp' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `mpfr_set_q' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `CGAL::postcondition_fail(char const*, char const*, int, char const*)' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpn_add_n' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_set_d' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `mpfr_get_d' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_sub' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpz_init_set_ui' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_clear' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpn_sqr' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `mpfr_set_emin' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpn_sub_n' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_mul' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_div' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `CGAL::Random::Random(unsigned int)' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpz_init_set_si' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `mpfr_subnormalize' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_set' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpn_mul' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `CGAL::warning_fail(char const*, char const*, int, char const*)' /usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_add' collect2: error: ld returned 1 exit status make: *** [/home/ABCD/OpenFOAM/OpenFOAM-v2506/wmake/makefiles/general:182: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/bin/setVofField] Error 1

    setShapedFields 的编译错误与上面的类似。

  • 基本理论区

    420 主题
    2k 帖子
    Q

    连续体中选择拉个朗日多相流,选的是瞬态,可是没见到如何设置颗粒的时间不长和喷射时间,,请教各位大佬

  • Fluent交流区

    1k 主题
    5k 帖子
    I

    压力的问题可以看看压力的分布。
    看你现在的情况, 压力问题和温度问题都出现了,那暗示有三种可能,1.网格过于离谱;2.物理模型选择离谱;3.边界条件离谱。

  • 网格交流区

    238 主题
    1k 帖子
    李东岳

    是的

  • 有界的CFD!无界的讨论!

    494 主题
    2k 帖子
    李东岳
    差评获奖感言

    5d92bd29-ea41-4f41-abb9-d497c5fb5c53-image.png

    之前我有一个朋友,聘用了一个月嫂。他们对月嫂的评价,并不是很好。但是他们还发现,之前还有人给月嫂送锦旗。朋友很难理解,为什么有人送锦旗,有人还嫌弃?我当时跟朋友说,每个家的情况不同,因此每个月嫂对每家的适用情况不一样,因此褒贬不一,这很正常

    产品褒贬不一,这在世界上所有的产品都存在的。顺丰有理赔,小米汽车有索赔,华为手机有粉有黑,就算是货币,在汇率低的时候都会被卖。我从来没见过任何一个产品,具有100%的好评。

    我自己非常能够理解产品的好评差评一定是共生的。然而自己的产品设计,遇到不好的评价,要用一生去治愈。

    捕获.JPG

    这个老铁23年9月来的。10月份回去后私下还微信问我几个问题。后来好像把我删了,公众号也没关注,上面是他唯一一条留言。不过他的评论,应该是真实的。

    除了这个课之外,我写的CFD公众号、《无痛苦ns方程笔记》、包括 dyfluid.com, 甚至 cfd-china.com ,也有人褒贬不一。尤其是CFD界公众号,隔三差五就有人骂人。骂人的我直接删了,感觉素质特别低。

    顺着这个话题,我们从技术的问题上,讨论一下潜在的差评来源。

    我的原因 课程没有PPT 课程不承诺给代码 课程结构设计 教室环境

    我的解决方案:

    没有PPT没有解决方法。我只能手推方程。想看PPT,我的课不合适。

    今年会给出一个方案。实在写不出来,你可以迂回的拿走源代码。但课程不给代码的原因,是我要让你们去写代码,而不是我给你们代码!!这个我强调很多遍了。要别人的代码不是学CFD的态度。方程你要自己推,代码你要自己写!

    我每年都会投入非常多的时间去课程设计。但众口难调。我这面风格非常严重。比如方程就是要手推,代码就是要你们自己写。如果你们想直接看方程,直接要能用的代码。我的课不适合你。

    针对教室环境这个。每年会议室都要花个几万块钱,这已经很贵了。我尽力找性价比高的

    学生的原因 本身主动性比较低

    主动性比较低。遇到卡壳你不问我,你就会跟不上。跟不上效果就会很差。

    我一直都在回答各种代码的问题,协助解决。但是有一些人真的是也不听我讲课,自己做跟课程完全无关的事情。因为我一直在教室下面来回走,有人举手我就解决,我能看到大家都在干什么。这我怎么说,我说你为什么不听课?我不可能说。

    主动性低可能有很多原因,一些可能是导师让来的,自己也不太愿意学(我见过一些)。一些可能是感觉学着学着感觉太难了,后面放弃了(较少)。

    最后说一个奇怪的现象

    另外,做这么10多年来,我见过2个课堂上睡觉的。

    只有2个。印象太深了。一个是北京某高校做可压缩的老铁。一个是青岛某研究院的老铁。青岛的老铁拿了个摄像机来录制。我阻止后,后续就趴桌子睡觉不听了。

    我也想不太明白。你花了这么多钱,为什么要来课堂上睡觉?这个我也不好处理,让他们走?人家花钱了。那咋整,那就睡吧。

    之前还有一次课程占了1天中秋假期。有学生留下匿名差评,说课程不考虑假期竟然安排在中秋节,谁中秋节还学习? 这种我属实控制不了。有些时候课程的时间不太好安排,只能这样了。

    正常的课堂效果

    正常的参加我的课程之后,你的效果应该是:

    之前学习OpenFOAM一年了感觉也不会编程,算法也看不太明白。课程5天时间里,主流的CFD算法也能听懂个80%。对算法有全局到细节的认识,一些东西可能还不是很懂,这需要回去消化。代码方面,你能写出来课堂上90%的求解器。虽然一些求解器没跟上。但自己写的时候遇到了上百个bug,问老师后都解决了。5天时间之后,自信心爆棚!回去跃跃欲试想自己植入自己的算法。

    另外,每个求解器,只要写出来的,我都会发礼品。因此我大体知道有多少人能写出来。那种热身的,基本都能写出来。

    复杂的求解器,估计有30%-50%的人能写出来。那剩下的人没写出来,一些人去做自己的不相关的科研去了,一些人临时有事,一些人纯主动性不足不想写这个特定的求解器。

    只要你主动的去吸收,主动问我,100%都能给你解决各种bug,所有求解器都能写出来

    在高中,流弊的老师,带100个学生,考上清华也只有2个。一个班级同样有排名靠后的。要做成任何一件事,都需要双方的努力。我好好备课,你好好去学。才能获得最好的效果。缺一不可。