ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-3.0/src/UseTheForce/DarkSide/shapes.F90
(Generate patch)

Comparing trunk/OOPSE-3.0/src/UseTheForce/DarkSide/shapes.F90 (file contents):
Revision 1717 by chrisfen, Fri Nov 5 21:04:33 2004 UTC vs.
Revision 2188 by chuckv, Wed Apr 13 20:17:06 2005 UTC

# Line 1 | Line 1
1 + !!
2 + !! Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
3 + !!
4 + !! The University of Notre Dame grants you ("Licensee") a
5 + !! non-exclusive, royalty free, license to use, modify and
6 + !! redistribute this software in source and binary code form, provided
7 + !! that the following conditions are met:
8 + !!
9 + !! 1. Acknowledgement of the program authors must be made in any
10 + !!    publication of scientific results based in part on use of the
11 + !!    program.  An acceptable form of acknowledgement is citation of
12 + !!    the article in which the program was described (Matthew
13 + !!    A. Meineke, Charles F. Vardeman II, Teng Lin, Christopher
14 + !!    J. Fennell and J. Daniel Gezelter, "OOPSE: An Object-Oriented
15 + !!    Parallel Simulation Engine for Molecular Dynamics,"
16 + !!    J. Comput. Chem. 26, pp. 252-271 (2005))
17 + !!
18 + !! 2. Redistributions of source code must retain the above copyright
19 + !!    notice, this list of conditions and the following disclaimer.
20 + !!
21 + !! 3. Redistributions in binary form must reproduce the above copyright
22 + !!    notice, this list of conditions and the following disclaimer in the
23 + !!    documentation and/or other materials provided with the
24 + !!    distribution.
25 + !!
26 + !! This software is provided "AS IS," without a warranty of any
27 + !! kind. All express or implied conditions, representations and
28 + !! warranties, including any implied warranty of merchantability,
29 + !! fitness for a particular purpose or non-infringement, are hereby
30 + !! excluded.  The University of Notre Dame and its licensors shall not
31 + !! be liable for any damages suffered by licensee as a result of
32 + !! using, modifying or distributing the software or its
33 + !! derivatives. In no event will the University of Notre Dame or its
34 + !! licensors be liable for any lost revenue, profit or data, or for
35 + !! direct, indirect, special, consequential, incidental or punitive
36 + !! damages, however caused and regardless of the theory of liability,
37 + !! arising out of the use of or inability to use software, even if the
38 + !! University of Notre Dame has been advised of the possibility of
39 + !! such damages.
40 + !!
41 +
42 +
43   module shapes
44  
45    use force_globals
# Line 26 | Line 68 | module shapes
68    public :: do_shape_pair
69    public :: newShapeType
70    public :: complete_Shape_FF
71 <
71 >  public :: destroyShapeTypes
72  
73    type, private :: Shape
74       integer :: atid
# Line 1387 | Line 1429 | end module shapes
1429      
1430    end subroutine Orthogonal_Polynomial
1431    
1432 < end module shapes
1432 >  subroutine deallocateShapes(this)
1433 >    type(Shape), pointer :: this
1434  
1435 < subroutine makeShape(nContactFuncs, ContactFuncLValue, &
1436 <     ContactFuncMValue, ContactFunctionType, ContactFuncCoefficient, &
1437 <     nRangeFuncs, RangeFuncLValue, RangeFuncMValue, RangeFunctionType, &
1438 <     RangeFuncCoefficient, nStrengthFuncs, StrengthFuncLValue, &
1396 <     StrengthFuncMValue, StrengthFunctionType, StrengthFuncCoefficient, &
1397 <     myATID, status)
1435 >     if (associated( this%ContactFuncLValue)) then
1436 >        deallocate(this%ContactFuncLValue)
1437 >        this%ContactFuncLValue => null()
1438 >     end if
1439  
1440 <  use definitions
1441 <  use shapes, only: newShapeType
1442 <  
1443 <  integer :: nContactFuncs
1444 <  integer :: nRangeFuncs
1445 <  integer :: nStrengthFuncs
1446 <  integer :: status
1447 <  integer :: myATID
1407 <  
1408 <  integer, dimension(nContactFuncs) :: ContactFuncLValue          
1409 <  integer, dimension(nContactFuncs) :: ContactFuncMValue          
1410 <  integer, dimension(nContactFuncs) :: ContactFunctionType        
1411 <  real(kind=dp), dimension(nContactFuncs) :: ContactFuncCoefficient
1412 <  integer, dimension(nRangeFuncs) :: RangeFuncLValue            
1413 <  integer, dimension(nRangeFuncs) :: RangeFuncMValue            
1414 <  integer, dimension(nRangeFuncs) :: RangeFunctionType          
1415 <  real(kind=dp), dimension(nRangeFuncs) :: RangeFuncCoefficient  
1416 <  integer, dimension(nStrengthFuncs) :: StrengthFuncLValue          
1417 <  integer, dimension(nStrengthFuncs) :: StrengthFuncMValue          
1418 <  integer, dimension(nStrengthFuncs) :: StrengthFunctionType        
1419 <  real(kind=dp), dimension(nStrengthFuncs) :: StrengthFuncCoefficient
1420 <  
1421 <  call newShapeType(nContactFuncs, ContactFuncLValue, &
1422 <       ContactFuncMValue, ContactFunctionType, ContactFuncCoefficient, &
1423 <       nRangeFuncs, RangeFuncLValue, RangeFuncMValue, RangeFunctionType, &
1424 <       RangeFuncCoefficient, nStrengthFuncs, StrengthFuncLValue, &
1425 <       StrengthFuncMValue, StrengthFunctionType, StrengthFuncCoefficient, &
1426 <       myATID, status)
1427 <
1428 <  return
1429 < end subroutine makeShape
1430 <
1431 < subroutine completeShapeFF(status)
1432 <
1433 <  use shapes, only: complete_Shape_FF
1440 >     if (associated( this%ContactFuncMValue)) then
1441 >        deallocate( this%ContactFuncMValue)
1442 >         this%ContactFuncMValue => null()
1443 >      end if
1444 >      if (associated( this%ContactFunctionType)) then
1445 >         deallocate(this%ContactFunctionType)
1446 >         this%ContactFunctionType => null()
1447 >      end if
1448  
1449 <  integer, intent(out)  :: status
1450 <  integer :: myStatus
1449 >     if (associated( this%ContactFuncCoefficient)) then
1450 >        deallocate(this%ContactFuncCoefficient)
1451 >        this%ContactFuncCoefficient => null()
1452 >     end if
1453  
1454 <  myStatus = 0
1454 >     if (associated( this%RangeFuncLValue)) then
1455 >        deallocate(this%RangeFuncLValue)
1456 >        this%RangeFuncLValue => null()
1457 >     end if
1458 >     if (associated( this%RangeFuncMValue)) then
1459 >        deallocate( this%RangeFuncMValue)
1460 >         this%RangeFuncMValue => null()
1461 >      end if
1462  
1463 <  call complete_Shape_FF(myStatus)
1463 >     if (associated( this%RangeFunctionType)) then
1464 >        deallocate( this%RangeFunctionType)
1465 >         this%RangeFunctionType => null()
1466 >      end if
1467 >    if (associated( this%RangeFuncCoefficient)) then
1468 >       deallocate(this%RangeFuncCoefficient)
1469 >       this%RangeFuncCoefficient => null()
1470 >    end if
1471  
1472 <  status = myStatus
1472 >    if (associated( this%StrengthFuncLValue)) then
1473 >       deallocate(this%StrengthFuncLValue)
1474 >       this%StrengthFuncLValue => null()
1475 >    end if
1476  
1477 <  return
1478 < end subroutine completeShapeFF
1477 >    if (associated( this%StrengthFuncMValue )) then
1478 >       deallocate(this%StrengthFuncMValue)
1479 >       this%StrengthFuncMValue => null()
1480 >    end if
1481  
1482 +    if(associated( this%StrengthFunctionType)) then
1483 +       deallocate(this%StrengthFunctionType)
1484 +       this%StrengthFunctionType => null()
1485 +    end if
1486 +    if (associated( this%StrengthFuncCoefficient )) then
1487 +       deallocate(this%StrengthFuncCoefficient)
1488 +       this%StrengthFuncCoefficient => null()
1489 +    end if
1490 +  end subroutine deallocateShapes
1491 +
1492 +  subroutine destroyShapeTypes
1493 +    integer :: i
1494 +    type(Shape), pointer :: thisShape
1495 +
1496 + ! First walk through and kill the shape
1497 +    do i = 1,ShapeMap%n_shapes
1498 +       thisShape => ShapeMap%Shapes(i)
1499 +       call deallocateShapes(thisShape)
1500 +    end do
1501 +    
1502 +    ! set shape map to starting values
1503 +    ShapeMap%n_shapes = 0
1504 +    ShapeMap%currentShape = 0
1505 +    
1506 +     if (associated(ShapeMap%Shapes)) then
1507 +       deallocate(ShapeMap%Shapes)
1508 +       ShapeMap%Shapes => null()
1509 +    end if
1510 +
1511 +    if (associated(ShapeMap%atidToShape)) then
1512 +       deallocate(ShapeMap%atidToShape)
1513 +       ShapeMap%atidToShape => null()
1514 +    end if
1515 +
1516 +
1517 +  end subroutine destroyShapeTypes
1518 +
1519 +  
1520 + end module shapes

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines