TEXT(Buoyancy Settings 78 start of ...buoy This macro facilitates the setting of buoyancy-derived sources of momentum. BUOYA, BUOYB and BUOYC are the gravitational accelerations in the cartesian x-, y- and z-directions. PATCH(BUOYANCY,PHASEM,1,NX,1,NY,1,NZ,1,LSTEP) GRAVACC Determine which are the affected velocities INTEGER(IVEL) label again IF(GRAVDIR.EQ.1) THEN + IVEL=5 + if(.not.case4) then + BUOYB=GRAVACC + endif + MESG(gravdir=1; gravity acts in positive y direction ELSE + IF(GRAVDIR.EQ.2) THEN + IVEL=5 + if(.not.case4) then + BUOYB=-GRAVACC + endif + MESG( gravity acts in negative y direction + ELSE + IF(GRAVDIR.EQ.3) THEN + IVEL=3 + if(.not.case4) then + BUOYA=GRAVACC + endif + MESG( gravity acts in positive x direction + ELSE + IF(GRAVDIR.EQ.4) THEN + IVEL=3 + if(.not.case4) then + BUOYA=-GRAVACC + endif + MESG( gravity acts in negative x direction + ELSE + IF(GRAVDIR.EQ.5) THEN + IVEL=7 + if(.not.case4) then + BUOYC=GRAVACC + endif + MESG( gravity acts in positive z direction + ELSE + IF(GRAVDIR.EQ.6) THEN + IVEL=7 + IF(.NOT.CASE4) THEN + BUOYC=-GRAVACC + ENDIF + MESG( gravity acts in negative z direction + ELSE + MESG(Please specify gravity direction, gravdir (1 to 6) + READVDU(GRAVDIR,INT,0) + IF(:GRAVDIR:.EQ.0) THEN + GO TO AGAIN + ENDIF + ENDIF + ENDIF + ENDIF + ENDIF + ENDIF ENDIF GRAVDIR COVAL(BUOYANCY,IVEL,FIXFLU,:BUOYOPT:) IF(.NOT.CARTES) THEN + IF(:GRAVDIR:.LT.5) THEN + COVAL(BUOYANCY,:IVEL-2:,FIXFLU,:BUOYOPT:) + ENDIF ENDIF IF(.NOT.ONEPHS) THEN + COVAL(BUOYANCY,:IVEL:+1,FIXFLU,:BUOYOPT:) + IF(.NOT.CARTES) THEN + IF(:GRAVDIR:.LT.5) THEN + COVAL(BUOYANCY,:IVEL:-2,FIXFLU,:BUOYOPT:) + ENDIF + ENDIF ENDIF IF(BUOYOPT.EQ.GRND1) THEN + mesg(buoyancy option is DENSITY + GOTO END ENDIF determine BOUYD,E for densdiff and bouss IF(BUOYOPT.EQ.GRND2) THEN + mesg(buoyancy option is DENSDIFF For DENSDIFF, BUOYD is the reference density. + BUOYD=RHOREF + MESG(The reference density is :buoyd: ELSE + IF(BUOYOPT.EQ.GRND4) THEN + mesg(buoyancy option is EXTBOUSS For EXTBOUSS, ie extended Boussinesq, set constants for the formula: force/mass = bouya + buoyb*variable_ibuoyb + buoyc*variable_ibuoyc + buoya + buoyb + buoyc + ibuoyb + ibuoyc + goto end + ELSE + mesg(buoyancy option is BOUSS For BOUSS, DVO1DT is the volumetric expansion coefficient & BUOYE is the reference temperature (or enthalpy for h) + DVO1DT + ENDIF + IF(:ISLN(14)/6*6:.EQ.ISLN(14)) THEN + MESG(:NAME(14): is the solved-for variable + MESG(reference value is = :href: OK? If not, insert other.. + READVDU(HREF,REAL,HREF) + BUOYE=HREF + ELSE + IF(:ISLN(TEM1)/6*6:.EQ.ISLN(TEM1)) THEN + MESG(TEM1 is the solved-for variable + MESG(reference value is = :tref: OK? If not, insert other.. + READVDU(TREF,REAL,TREF) + BUOYE=TREF + ENDIF + ENDIF ENDIF LABEL END 78 end of .....buoy